package simpledb.optimizer;

/**
 * LogicalSelectListNode 表示逻辑查询计划（LogicalQueryPlan）中 SELECT 子句里的一个字段项。
 * 它可以是一个普通字段，也可以是一个聚合函数作用于该字段的结果。
 */
public class LogicalSelectListNode {

    /**
     * 被选中的字段名称，可能是未限定的纯字段名（如 "name"），也可能是带表名或别名的限定名（如 "t1.name"）
     */
    public final String fname;

    /**
     * 作用在该字段上的聚合操作（如果有的话），例如 "AVG", "SUM", "COUNT" 等；
     * 如果不是聚合字段，则为 null。
     */
    public final String aggOp;

    /**
     * 构造一个新的 LogicalSelectListNode 实例
     *
     * @param aggOp 聚合操作符（如 "AVG", "SUM", "COUNT" 等），如果没有则传入 null
     * @param fname 字段名（可带表/别名前缀，如 "t1.field1"）
     */
    public LogicalSelectListNode(String aggOp, String fname) {
        this.aggOp = aggOp;
        this.fname = fname;
    }
}
